package com.tiancheng.trade.merchant.service;

import com.tiancheng.trade.commom.core.data.PageInfo;
import com.tiancheng.trade.merchant.exception.BusinessException;
import com.tiancheng.trade.merchant.model.Product;
import com.tiancheng.trade.merchant.vo.merchant.GetProductVO;
import com.tiancheng.trade.merchant.vo.product.*;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public interface IProductService {

    FindProductDetailResponseVO findDetailById(Long id) throws BusinessException;

    PageInfo<Product> findPageList(FindProductPageListVO product) throws BusinessException;

    int removeById(Long id) throws BusinessException;

    int update(UpdateProductVO product) throws BusinessException;

    int create(CreateProductVO product) throws BusinessException;

    List<Product> findPaymentChannelByProductCodes(List<String> strList) throws BusinessException;

    List<Product> findPayChannelByCodeBusiness(List<String> strList) throws BusinessException;

    Long getProductQty(GetProductVO productVO) throws BusinessException;

    List<Product> findProductCodeBusiness(FindProductPageListVO product) throws BusinessException;

    void export(FindProductPageListVO product, HttpServletRequest request, HttpServletResponse response) throws IOException;

    Product getProductInfo(String productId);

    List<CreateProductResVO> openCreate(OpenCreateProductVO productVO);

    void openDelete(OpenDeleteProductVO openDeleteProductVO);

    void openUpdate(OpenUpdateProductVO productVO);

    void openDeleteByMerchant(OpenDeleteProductByMerchantVO openDeleteProductVO);

    int deleteByProductCode(String productCode);
}
